From: Jasper St. Pierre Date: Sat, 16 Mar 2013 20:50:16 +0000 (-0400) Subject: app-system: Use g_hash_table_iter_remove X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~4196 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=0fd6ae5330226709c00c131efcfede6a2db8d5fe;p=gnome-shell.git app-system: Use g_hash_table_iter_remove glib now provides an iteration-safe way to remove items from the hash table, so use it instead of building a separate list. https://bugzilla.gnome.org/show_bug.cgi?id=698486 --- diff --git a/src/shell-app-system.c b/src/shell-app-system.c index 4d59fa313..03648f9e1 100644 --- a/src/shell-app-system.c +++ b/src/shell-app-system.c @@ -293,8 +293,6 @@ on_apps_tree_changed_cb (GMenuTree *tree, GHashTable *new_apps; GHashTableIter iter; gpointer key, value; - GSList *removed_apps = NULL; - GSList *removed_node; g_assert (tree == self->priv->apps_tree); @@ -376,15 +374,9 @@ on_apps_tree_changed_cb (GMenuTree *tree, const char *id = key; if (!g_hash_table_lookup (new_apps, id)) - removed_apps = g_slist_prepend (removed_apps, (char*)id); + g_hash_table_iter_remove (&iter); } - for (removed_node = removed_apps; removed_node; removed_node = removed_node->next) - { - const char *id = removed_node->data; - g_hash_table_remove (self->priv->id_to_app, id); - } - g_slist_free (removed_apps); - + g_hash_table_destroy (new_apps); g_signal_emit (self, signals[INSTALLED_CHANGED], 0);